//package cn.com.lms.config;
//
//import com.alibaba.fastjson.JSON;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.web.servlet.HandlerInterceptor;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//
//public class AccessInterceptor implements HandlerInterceptor {
//
//    @Autowired
//    private StringRedisTemplate stringRedisTemplate;
//
//    /**
//     * 在请求处理之前进行调用（Controller方法调用之前）
//     */
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
//        String header = request.getHeader("token");
//        if(header == null || header.trim().equals("")) {
//            Map<String, Object> map = new HashMap<String, Object>();
//            map.put("code", "406");
//            map.put("msg", "token不能为空");
//
//            response.setContentType("application/json;charset=utf-8");
//            response.getWriter().write(JSON.toJSONString(map));
//            return false;
//        } else {
//            String[] tokens = header.split(",");
//            if(tokens.length != 2) {
//                Map<String, Object> map = new HashMap<String, Object>();
//                map.put("code", "407");
//                map.put("msg", "token非法");
//
//                response.setContentType("application/json;charset=utf-8");
//                response.getWriter().write(JSON.toJSONString(map));
//                return false;
//            } else {
//                String token1 = tokens[0];
//                String token2 = tokens[1];
//
//                String redres = "";
//                try {
//                    redres = stringRedisTemplate.opsForValue().get("SYSGN_TOKEN:" + token1);
//                } catch(Exception e) {
//                    e.printStackTrace();
//                }
//
//                if(redres == null || redres.trim().equals("")) {
//                    Map<String, Object> map = new HashMap<String, Object>();
//                    map.put("code", "408");
//                    map.put("msg", "token不正确或失效");
//
//                    response.setContentType("application/json;charset=utf-8");
//                    response.getWriter().write(JSON.toJSONString(map));
//                    return false;
//                } else {
//                    if(redres.equals(token2)) {
//                        return true;
//                    } else {
//                        Map<String, Object> map = new HashMap<String, Object>();
//                        map.put("code", "408");
//                        map.put("msg", "token不正确或失效");
//
//                        response.setContentType("application/json;charset=utf-8");
//                        response.getWriter().write(JSON.toJSONString(map));
//                        return false;
//                    }
//                }
//            }
//        }
//    }
//
//    /**
//     * 请求处理之后进行调用，但是在视图被渲染之前（Controller方法调用之后）
//     */
//    @Override
//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
//
//    }
//
//    /**
//     * 在整个请求结束之后被调用，也就是在DispatcherServlet 渲染了对应的视图之后执行（主要是用于进行资源清理工作）
//     */
//    @Override
//    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//
//    }
//
//}
